home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 98 / Skunkware 98.iso / src / interp / perl5.005.tar.gz / perl5.005.tar / perl5.005 / djgpp / fixpmain < prev   
Text File  |  1998-07-11  |  964b  |  31 lines

  1. #!perl -w
  2. # Fix perlmain.c under DOS (short & case insensitive filenames).
  3. # Called from Makefile.aperl when needed.
  4. # You don't need this when LFN=y.
  5.  
  6. use Config;
  7.  
  8. open (PERLM,"<perlmain.c") or die "Can't load perlmain.c: $!";
  9. open (MAKEFILE,"<makefile.pl") or die "Can't load makefile.pl: $!";
  10. undef $/;
  11. $perlmain=<PERLM>;
  12. $makefile=<MAKEFILE>;
  13.  
  14. ($_) = $makefile =~ /\bNAME\b.*=>\W*([\w\:]+)/; # extract module name
  15. $badname=join ("__",map {lc substr ($_,0,8)} split /:+/); # dosify
  16. $perlmain =~ s/^.*boot_$badname.*$//gm if $badname; # delete bad lines
  17.  
  18. @exts=split (" ",$Config{known_extensions});
  19. for $realname (@exts,'DynaLoader')
  20. {
  21.     $dosname=substr (lc $realname,0,8);
  22.     $perlmain =~ s/\bboot_$dosname/boot_$realname/gm;
  23.     $perlmain =~ s/\b$dosname(::bootstrap)/$realname$1/gm;
  24. }
  25.  
  26. #DynaLoader is special
  27. $perlmain =~ s/(DynaLoader:\:boot)strap/$1_DynaLoader/gm;
  28.  
  29. open (PERLM,">perlmain.c") or die "Can't write perlmain.c: $!";
  30. print PERLM $perlmain;
  31.